home *** CD-ROM | disk | FTP | other *** search
/ PC World Komputer 2010 April / PCWorld0410.iso / hity wydania / Ubuntu 9.10 PL / karmelkowy-koliberek-desktop-9.10-i386-PL.iso / casper / filesystem.squashfs / usr / include / linux / ethtool.h < prev    next >
C/C++ Source or Header  |  2009-10-16  |  18KB  |  550 lines

  1. /*
  2.  * ethtool.h: Defines for Linux ethtool.
  3.  *
  4.  * Copyright (C) 1998 David S. Miller (davem@redhat.com)
  5.  * Copyright 2001 Jeff Garzik <jgarzik@pobox.com>
  6.  * Portions Copyright 2001 Sun Microsystems (thockin@sun.com)
  7.  * Portions Copyright 2002 Intel (eli.kupermann@intel.com,
  8.  *                                christopher.leech@intel.com,
  9.  *                                scott.feldman@intel.com)
  10.  * Portions Copyright (C) Sun Microsystems 2008
  11.  */
  12.  
  13. #ifndef _LINUX_ETHTOOL_H
  14. #define _LINUX_ETHTOOL_H
  15.  
  16. #include <linux/types.h>
  17.  
  18. /* This should work for both 32 and 64 bit userland. */
  19. struct ethtool_cmd {
  20.     __u32    cmd;
  21.     __u32    supported;    /* Features this interface supports */
  22.     __u32    advertising;    /* Features this interface advertises */
  23.     __u16    speed;        /* The forced speed, 10Mb, 100Mb, gigabit */
  24.     __u8    duplex;        /* Duplex, half or full */
  25.     __u8    port;        /* Which connector port */
  26.     __u8    phy_address;
  27.     __u8    transceiver;    /* Which transceiver to use */
  28.     __u8    autoneg;    /* Enable or disable autonegotiation */
  29.     __u8    mdio_support;
  30.     __u32    maxtxpkt;    /* Tx pkts before generating tx int */
  31.     __u32    maxrxpkt;    /* Rx pkts before generating rx int */
  32.     __u16    speed_hi;
  33.     __u8    eth_tp_mdix;
  34.     __u8    reserved2;
  35.     __u32    lp_advertising;    /* Features the link partner advertises */
  36.     __u32    reserved[2];
  37. };
  38.  
  39. static __inline__ void ethtool_cmd_speed_set(struct ethtool_cmd *ep,
  40.                         __u32 speed)
  41. {
  42.  
  43.     ep->speed = (__u16)speed;
  44.     ep->speed_hi = (__u16)(speed >> 16);
  45. }
  46.  
  47. static __inline__ __u32 ethtool_cmd_speed(struct ethtool_cmd *ep)
  48. {
  49.     return (ep->speed_hi << 16) | ep->speed;
  50. }
  51.  
  52. #define ETHTOOL_BUSINFO_LEN    32
  53. /* these strings are set to whatever the driver author decides... */
  54. struct ethtool_drvinfo {
  55.     __u32    cmd;
  56.     char    driver[32];    /* driver short name, "tulip", "eepro100" */
  57.     char    version[32];    /* driver version string */
  58.     char    fw_version[32];    /* firmware version string, if applicable */
  59.     char    bus_info[ETHTOOL_BUSINFO_LEN];    /* Bus info for this IF. */
  60.                 /* For PCI devices, use pci_name(pci_dev). */
  61.     char    reserved1[32];
  62.     char    reserved2[12];
  63.     __u32    n_priv_flags;    /* number of flags valid in ETHTOOL_GPFLAGS */
  64.     __u32    n_stats;    /* number of u64's from ETHTOOL_GSTATS */
  65.     __u32    testinfo_len;
  66.     __u32    eedump_len;    /* Size of data from ETHTOOL_GEEPROM (bytes) */
  67.     __u32    regdump_len;    /* Size of data from ETHTOOL_GREGS (bytes) */
  68. };
  69.  
  70. #define SOPASS_MAX    6
  71. /* wake-on-lan settings */
  72. struct ethtool_wolinfo {
  73.     __u32    cmd;
  74.     __u32    supported;
  75.     __u32    wolopts;
  76.     __u8    sopass[SOPASS_MAX]; /* SecureOn(tm) password */
  77. };
  78.  
  79. /* for passing single values */
  80. struct ethtool_value {
  81.     __u32    cmd;
  82.     __u32    data;
  83. };
  84.  
  85. /* for passing big chunks of data */
  86. struct ethtool_regs {
  87.     __u32    cmd;
  88.     __u32    version; /* driver-specific, indicates different chips/revs */
  89.     __u32    len; /* bytes */
  90.     __u8    data[0];
  91. };
  92.  
  93. /* for passing EEPROM chunks */
  94. struct ethtool_eeprom {
  95.     __u32    cmd;
  96.     __u32    magic;
  97.     __u32    offset; /* in bytes */
  98.     __u32    len; /* in bytes */
  99.     __u8    data[0];
  100. };
  101.  
  102. /* for configuring coalescing parameters of chip */
  103. struct ethtool_coalesce {
  104.     __u32    cmd;    /* ETHTOOL_{G,S}COALESCE */
  105.  
  106.     /* How many usecs to delay an RX interrupt after
  107.      * a packet arrives.  If 0, only rx_max_coalesced_frames
  108.      * is used.
  109.      */
  110.     __u32    rx_coalesce_usecs;
  111.  
  112.     /* How many packets to delay an RX interrupt after
  113.      * a packet arrives.  If 0, only rx_coalesce_usecs is
  114.      * used.  It is illegal to set both usecs and max frames
  115.      * to zero as this would cause RX interrupts to never be
  116.      * generated.
  117.      */
  118.     __u32    rx_max_coalesced_frames;
  119.  
  120.     /* Same as above two parameters, except that these values
  121.      * apply while an IRQ is being serviced by the host.  Not
  122.      * all cards support this feature and the values are ignored
  123.      * in that case.
  124.      */
  125.     __u32    rx_coalesce_usecs_irq;
  126.     __u32    rx_max_coalesced_frames_irq;
  127.  
  128.     /* How many usecs to delay a TX interrupt after
  129.      * a packet is sent.  If 0, only tx_max_coalesced_frames
  130.      * is used.
  131.      */
  132.     __u32    tx_coalesce_usecs;
  133.  
  134.     /* How many packets to delay a TX interrupt after
  135.      * a packet is sent.  If 0, only tx_coalesce_usecs is
  136.      * used.  It is illegal to set both usecs and max frames
  137.      * to zero as this would cause TX interrupts to never be
  138.      * generated.
  139.      */
  140.     __u32    tx_max_coalesced_frames;
  141.  
  142.     /* Same as above two parameters, except that these values
  143.      * apply while an IRQ is being serviced by the host.  Not
  144.      * all cards support this feature and the values are ignored
  145.      * in that case.
  146.      */
  147.     __u32    tx_coalesce_usecs_irq;
  148.     __u32    tx_max_coalesced_frames_irq;
  149.  
  150.     /* How many usecs to delay in-memory statistics
  151.      * block updates.  Some drivers do not have an in-memory
  152.      * statistic block, and in such cases this value is ignored.
  153.      * This value must not be zero.
  154.      */
  155.     __u32    stats_block_coalesce_usecs;
  156.  
  157.     /* Adaptive RX/TX coalescing is an algorithm implemented by
  158.      * some drivers to improve latency under low packet rates and
  159.      * improve throughput under high packet rates.  Some drivers
  160.      * only implement one of RX or TX adaptive coalescing.  Anything
  161.      * not implemented by the driver causes these values to be
  162.      * silently ignored.
  163.      */
  164.     __u32    use_adaptive_rx_coalesce;
  165.     __u32    use_adaptive_tx_coalesce;
  166.  
  167.     /* When the packet rate (measured in packets per second)
  168.      * is below pkt_rate_low, the {rx,tx}_*_low parameters are
  169.      * used.
  170.      */
  171.     __u32    pkt_rate_low;
  172.     __u32    rx_coalesce_usecs_low;
  173.     __u32    rx_max_coalesced_frames_low;
  174.     __u32    tx_coalesce_usecs_low;
  175.     __u32    tx_max_coalesced_frames_low;
  176.  
  177.     /* When the packet rate is below pkt_rate_high but above
  178.      * pkt_rate_low (both measured in packets per second) the
  179.      * normal {rx,tx}_* coalescing parameters are used.
  180.      */
  181.  
  182.     /* When the packet rate is (measured in packets per second)
  183.      * is above pkt_rate_high, the {rx,tx}_*_high parameters are
  184.      * used.
  185.      */
  186.     __u32    pkt_rate_high;
  187.     __u32    rx_coalesce_usecs_high;
  188.     __u32    rx_max_coalesced_frames_high;
  189.     __u32    tx_coalesce_usecs_high;
  190.     __u32    tx_max_coalesced_frames_high;
  191.  
  192.     /* How often to do adaptive coalescing packet rate sampling,
  193.      * measured in seconds.  Must not be zero.
  194.      */
  195.     __u32    rate_sample_interval;
  196. };
  197.  
  198. /* for configuring RX/TX ring parameters */
  199. struct ethtool_ringparam {
  200.     __u32    cmd;    /* ETHTOOL_{G,S}RINGPARAM */
  201.  
  202.     /* Read only attributes.  These indicate the maximum number
  203.      * of pending RX/TX ring entries the driver will allow the
  204.      * user to set.
  205.      */
  206.     __u32    rx_max_pending;
  207.     __u32    rx_mini_max_pending;
  208.     __u32    rx_jumbo_max_pending;
  209.     __u32    tx_max_pending;
  210.  
  211.     /* Values changeable by the user.  The valid values are
  212.      * in the range 1 to the "*_max_pending" counterpart above.
  213.      */
  214.     __u32    rx_pending;
  215.     __u32    rx_mini_pending;
  216.     __u32    rx_jumbo_pending;
  217.     __u32    tx_pending;
  218. };
  219.  
  220. /* for configuring link flow control parameters */
  221. struct ethtool_pauseparam {
  222.     __u32    cmd;    /* ETHTOOL_{G,S}PAUSEPARAM */
  223.  
  224.     /* If the link is being auto-negotiated (via ethtool_cmd.autoneg
  225.      * being true) the user may set 'autonet' here non-zero to have the
  226.      * pause parameters be auto-negotiated too.  In such a case, the
  227.      * {rx,tx}_pause values below determine what capabilities are
  228.      * advertised.
  229.      *
  230.      * If 'autoneg' is zero or the link is not being auto-negotiated,
  231.      * then {rx,tx}_pause force the driver to use/not-use pause
  232.      * flow control.
  233.      */
  234.     __u32    autoneg;
  235.     __u32    rx_pause;
  236.     __u32    tx_pause;
  237. };
  238.  
  239. #define ETH_GSTRING_LEN        32
  240. enum ethtool_stringset {
  241.     ETH_SS_TEST        = 0,
  242.     ETH_SS_STATS,
  243.     ETH_SS_PRIV_FLAGS,
  244. };
  245.  
  246. /* for passing string sets for data tagging */
  247. struct ethtool_gstrings {
  248.     __u32    cmd;        /* ETHTOOL_GSTRINGS */
  249.     __u32    string_set;    /* string set id e.c. ETH_SS_TEST, etc*/
  250.     __u32    len;        /* number of strings in the string set */
  251.     __u8    data[0];
  252. };
  253.  
  254. enum ethtool_test_flags {
  255.     ETH_TEST_FL_OFFLINE    = (1 << 0),    /* online / offline */
  256.     ETH_TEST_FL_FAILED    = (1 << 1),    /* test passed / failed */
  257. };
  258.  
  259. /* for requesting NIC test and getting results*/
  260. struct ethtool_test {
  261.     __u32    cmd;        /* ETHTOOL_TEST */
  262.     __u32    flags;        /* ETH_TEST_FL_xxx */
  263.     __u32    reserved;
  264.     __u32    len;        /* result length, in number of u64 elements */
  265.     __u64    data[0];
  266. };
  267.  
  268. /* for dumping NIC-specific statistics */
  269. struct ethtool_stats {
  270.     __u32    cmd;        /* ETHTOOL_GSTATS */
  271.     __u32    n_stats;    /* number of u64's being returned */
  272.     __u64    data[0];
  273. };
  274.  
  275. struct ethtool_perm_addr {
  276.     __u32    cmd;        /* ETHTOOL_GPERMADDR */
  277.     __u32    size;
  278.     __u8    data[0];
  279. };
  280.  
  281. /* boolean flags controlling per-interface behavior characteristics.
  282.  * When reading, the flag indicates whether or not a certain behavior
  283.  * is enabled/present.  When writing, the flag indicates whether
  284.  * or not the driver should turn on (set) or off (clear) a behavior.
  285.  *
  286.  * Some behaviors may read-only (unconditionally absent or present).
  287.  * If such is the case, return EINVAL in the set-flags operation if the
  288.  * flag differs from the read-only value.
  289.  */
  290. enum ethtool_flags {
  291.     ETH_FLAG_LRO        = (1 << 15),    /* LRO is enabled */
  292. };
  293.  
  294. /* The following structures are for supporting RX network flow
  295.  * classification configuration. Note, all multibyte fields, e.g.,
  296.  * ip4src, ip4dst, psrc, pdst, spi, etc. are expected to be in network
  297.  * byte order.
  298.  */
  299. struct ethtool_tcpip4_spec {
  300.     __be32    ip4src;
  301.     __be32    ip4dst;
  302.     __be16    psrc;
  303.     __be16    pdst;
  304.     __u8    tos;
  305. };
  306.  
  307. struct ethtool_ah_espip4_spec {
  308.     __be32    ip4src;
  309.     __be32    ip4dst;
  310.     __be32    spi;
  311.     __u8    tos;
  312. };
  313.  
  314. struct ethtool_rawip4_spec {
  315.     __be32    ip4src;
  316.     __be32    ip4dst;
  317.     __u8    hdata[64];
  318. };
  319.  
  320. struct ethtool_ether_spec {
  321.     __be16    ether_type;
  322.     __u8    frame_size;
  323.     __u8    eframe[16];
  324. };
  325.  
  326. #define    ETH_RX_NFC_IP4    1
  327. #define    ETH_RX_NFC_IP6    2
  328.  
  329. struct ethtool_usrip4_spec {
  330.     __be32    ip4src;
  331.     __be32    ip4dst;
  332.     __be32    l4_4_bytes;
  333.     __u8    tos;
  334.     __u8    ip_ver;
  335.     __u8    proto;
  336. };
  337.  
  338. struct ethtool_rx_flow_spec {
  339.     __u32        flow_type;
  340.     union {
  341.         struct ethtool_tcpip4_spec        tcp_ip4_spec;
  342.         struct ethtool_tcpip4_spec        udp_ip4_spec;
  343.         struct ethtool_tcpip4_spec        sctp_ip4_spec;
  344.         struct ethtool_ah_espip4_spec        ah_ip4_spec;
  345.         struct ethtool_ah_espip4_spec        esp_ip4_spec;
  346.         struct ethtool_rawip4_spec        raw_ip4_spec;
  347.         struct ethtool_ether_spec        ether_spec;
  348.         struct ethtool_usrip4_spec        usr_ip4_spec;
  349.         __u8                    hdata[64];
  350.     } h_u, m_u; /* entry, mask */
  351.     __u64        ring_cookie;
  352.     __u32        location;
  353. };
  354.  
  355. struct ethtool_rxnfc {
  356.     __u32                cmd;
  357.     __u32                flow_type;
  358.     /* The rx flow hash value or the rule DB size */
  359.     __u64                data;
  360.     struct ethtool_rx_flow_spec    fs;
  361.     __u32                rule_cnt;
  362.     __u32                rule_locs[0];
  363. };
  364.  
  365.  
  366. /* CMDs currently supported */
  367. #define ETHTOOL_GSET        0x00000001 /* Get settings. */
  368. #define ETHTOOL_SSET        0x00000002 /* Set settings. */
  369. #define ETHTOOL_GDRVINFO    0x00000003 /* Get driver info. */
  370. #define ETHTOOL_GREGS        0x00000004 /* Get NIC registers. */
  371. #define ETHTOOL_GWOL        0x00000005 /* Get wake-on-lan options. */
  372. #define ETHTOOL_SWOL        0x00000006 /* Set wake-on-lan options. */
  373. #define ETHTOOL_GMSGLVL        0x00000007 /* Get driver message level */
  374. #define ETHTOOL_SMSGLVL        0x00000008 /* Set driver msg level. */
  375. #define ETHTOOL_NWAY_RST    0x00000009 /* Restart autonegotiation. */
  376. #define ETHTOOL_GLINK        0x0000000a /* Get link status (ethtool_value) */
  377. #define ETHTOOL_GEEPROM        0x0000000b /* Get EEPROM data */
  378. #define ETHTOOL_SEEPROM        0x0000000c /* Set EEPROM data. */
  379. #define ETHTOOL_GCOALESCE    0x0000000e /* Get coalesce config */
  380. #define ETHTOOL_SCOALESCE    0x0000000f /* Set coalesce config. */
  381. #define ETHTOOL_GRINGPARAM    0x00000010 /* Get ring parameters */
  382. #define ETHTOOL_SRINGPARAM    0x00000011 /* Set ring parameters. */
  383. #define ETHTOOL_GPAUSEPARAM    0x00000012 /* Get pause parameters */
  384. #define ETHTOOL_SPAUSEPARAM    0x00000013 /* Set pause parameters. */
  385. #define ETHTOOL_GRXCSUM        0x00000014 /* Get RX hw csum enable (ethtool_value) */
  386. #define ETHTOOL_SRXCSUM        0x00000015 /* Set RX hw csum enable (ethtool_value) */
  387. #define ETHTOOL_GTXCSUM        0x00000016 /* Get TX hw csum enable (ethtool_value) */
  388. #define ETHTOOL_STXCSUM        0x00000017 /* Set TX hw csum enable (ethtool_value) */
  389. #define ETHTOOL_GSG        0x00000018 /* Get scatter-gather enable
  390.                         * (ethtool_value) */
  391. #define ETHTOOL_SSG        0x00000019 /* Set scatter-gather enable
  392.                         * (ethtool_value). */
  393. #define ETHTOOL_TEST        0x0000001a /* execute NIC self-test. */
  394. #define ETHTOOL_GSTRINGS    0x0000001b /* get specified string set */
  395. #define ETHTOOL_PHYS_ID        0x0000001c /* identify the NIC */
  396. #define ETHTOOL_GSTATS        0x0000001d /* get NIC-specific statistics */
  397. #define ETHTOOL_GTSO        0x0000001e /* Get TSO enable (ethtool_value) */
  398. #define ETHTOOL_STSO        0x0000001f /* Set TSO enable (ethtool_value) */
  399. #define ETHTOOL_GPERMADDR    0x00000020 /* Get permanent hardware address */
  400. #define ETHTOOL_GUFO        0x00000021 /* Get UFO enable (ethtool_value) */
  401. #define ETHTOOL_SUFO        0x00000022 /* Set UFO enable (ethtool_value) */
  402. #define ETHTOOL_GGSO        0x00000023 /* Get GSO enable (ethtool_value) */
  403. #define ETHTOOL_SGSO        0x00000024 /* Set GSO enable (ethtool_value) */
  404. #define ETHTOOL_GFLAGS        0x00000025 /* Get flags bitmap(ethtool_value) */
  405. #define ETHTOOL_SFLAGS        0x00000026 /* Set flags bitmap(ethtool_value) */
  406. #define ETHTOOL_GPFLAGS        0x00000027 /* Get driver-private flags bitmap */
  407. #define ETHTOOL_SPFLAGS        0x00000028 /* Set driver-private flags bitmap */
  408.  
  409. #define    ETHTOOL_GRXFH        0x00000029 /* Get RX flow hash configuration */
  410. #define    ETHTOOL_SRXFH        0x0000002a /* Set RX flow hash configuration */
  411. #define ETHTOOL_GGRO        0x0000002b /* Get GRO enable (ethtool_value) */
  412. #define ETHTOOL_SGRO        0x0000002c /* Set GRO enable (ethtool_value) */
  413. #define    ETHTOOL_GRXRINGS    0x0000002d /* Get RX rings available for LB */
  414. #define    ETHTOOL_GRXCLSRLCNT    0x0000002e /* Get RX class rule count */
  415. #define    ETHTOOL_GRXCLSRULE    0x0000002f /* Get RX classification rule */
  416. #define    ETHTOOL_GRXCLSRLALL    0x00000030 /* Get all RX classification rule */
  417. #define    ETHTOOL_SRXCLSRLDEL    0x00000031 /* Delete RX classification rule */
  418. #define    ETHTOOL_SRXCLSRLINS    0x00000032 /* Insert RX classification rule */
  419.  
  420. /* compatibility with older code */
  421. #define SPARC_ETH_GSET        ETHTOOL_GSET
  422. #define SPARC_ETH_SSET        ETHTOOL_SSET
  423.  
  424. /* Indicates what features are supported by the interface. */
  425. #define SUPPORTED_10baseT_Half        (1 << 0)
  426. #define SUPPORTED_10baseT_Full        (1 << 1)
  427. #define SUPPORTED_100baseT_Half        (1 << 2)
  428. #define SUPPORTED_100baseT_Full        (1 << 3)
  429. #define SUPPORTED_1000baseT_Half    (1 << 4)
  430. #define SUPPORTED_1000baseT_Full    (1 << 5)
  431. #define SUPPORTED_Autoneg        (1 << 6)
  432. #define SUPPORTED_TP            (1 << 7)
  433. #define SUPPORTED_AUI            (1 << 8)
  434. #define SUPPORTED_MII            (1 << 9)
  435. #define SUPPORTED_FIBRE            (1 << 10)
  436. #define SUPPORTED_BNC            (1 << 11)
  437. #define SUPPORTED_10000baseT_Full    (1 << 12)
  438. #define SUPPORTED_Pause            (1 << 13)
  439. #define SUPPORTED_Asym_Pause        (1 << 14)
  440. #define SUPPORTED_2500baseX_Full    (1 << 15)
  441. #define SUPPORTED_Backplane        (1 << 16)
  442. #define SUPPORTED_1000baseKX_Full    (1 << 17)
  443. #define SUPPORTED_10000baseKX4_Full    (1 << 18)
  444. #define SUPPORTED_10000baseKR_Full    (1 << 19)
  445. #define SUPPORTED_10000baseR_FEC    (1 << 20)
  446.  
  447. /* Indicates what features are advertised by the interface. */
  448. #define ADVERTISED_10baseT_Half        (1 << 0)
  449. #define ADVERTISED_10baseT_Full        (1 << 1)
  450. #define ADVERTISED_100baseT_Half    (1 << 2)
  451. #define ADVERTISED_100baseT_Full    (1 << 3)
  452. #define ADVERTISED_1000baseT_Half    (1 << 4)
  453. #define ADVERTISED_1000baseT_Full    (1 << 5)
  454. #define ADVERTISED_Autoneg        (1 << 6)
  455. #define ADVERTISED_TP            (1 << 7)
  456. #define ADVERTISED_AUI            (1 << 8)
  457. #define ADVERTISED_MII            (1 << 9)
  458. #define ADVERTISED_FIBRE        (1 << 10)
  459. #define ADVERTISED_BNC            (1 << 11)
  460. #define ADVERTISED_10000baseT_Full    (1 << 12)
  461. #define ADVERTISED_Pause        (1 << 13)
  462. #define ADVERTISED_Asym_Pause        (1 << 14)
  463. #define ADVERTISED_2500baseX_Full    (1 << 15)
  464. #define ADVERTISED_Backplane        (1 << 16)
  465. #define ADVERTISED_1000baseKX_Full    (1 << 17)
  466. #define ADVERTISED_10000baseKX4_Full    (1 << 18)
  467. #define ADVERTISED_10000baseKR_Full    (1 << 19)
  468. #define ADVERTISED_10000baseR_FEC    (1 << 20)
  469.  
  470. /* The following are all involved in forcing a particular link
  471.  * mode for the device for setting things.  When getting the
  472.  * devices settings, these indicate the current mode and whether
  473.  * it was foced up into this mode or autonegotiated.
  474.  */
  475.  
  476. /* The forced speed, 10Mb, 100Mb, gigabit, 2.5Gb, 10GbE. */
  477. #define SPEED_10        10
  478. #define SPEED_100        100
  479. #define SPEED_1000        1000
  480. #define SPEED_2500        2500
  481. #define SPEED_10000        10000
  482.  
  483. /* Duplex, half or full. */
  484. #define DUPLEX_HALF        0x00
  485. #define DUPLEX_FULL        0x01
  486.  
  487. /* Which connector port. */
  488. #define PORT_TP            0x00
  489. #define PORT_AUI        0x01
  490. #define PORT_MII        0x02
  491. #define PORT_FIBRE        0x03
  492. #define PORT_BNC        0x04
  493. #define PORT_OTHER        0xff
  494.  
  495. /* Which transceiver to use. */
  496. #define XCVR_INTERNAL        0x00
  497. #define XCVR_EXTERNAL        0x01
  498. #define XCVR_DUMMY1        0x02
  499. #define XCVR_DUMMY2        0x03
  500. #define XCVR_DUMMY3        0x04
  501.  
  502. /* Enable or disable autonegotiation.  If this is set to enable,
  503.  * the forced link modes above are completely ignored.
  504.  */
  505. #define AUTONEG_DISABLE        0x00
  506. #define AUTONEG_ENABLE        0x01
  507.  
  508. /* Mode MDI or MDI-X */
  509. #define ETH_TP_MDI_INVALID    0x00
  510. #define ETH_TP_MDI        0x01
  511. #define ETH_TP_MDI_X        0x02
  512.  
  513. /* Wake-On-Lan options. */
  514. #define WAKE_PHY        (1 << 0)
  515. #define WAKE_UCAST        (1 << 1)
  516. #define WAKE_MCAST        (1 << 2)
  517. #define WAKE_BCAST        (1 << 3)
  518. #define WAKE_ARP        (1 << 4)
  519. #define WAKE_MAGIC        (1 << 5)
  520. #define WAKE_MAGICSECURE    (1 << 6) /* only meaningful if WAKE_MAGIC */
  521.  
  522. /* L3-L4 network traffic flow types */
  523. #define    TCP_V4_FLOW    0x01
  524. #define    UDP_V4_FLOW    0x02
  525. #define    SCTP_V4_FLOW    0x03
  526. #define    AH_ESP_V4_FLOW    0x04
  527. #define    TCP_V6_FLOW    0x05
  528. #define    UDP_V6_FLOW    0x06
  529. #define    SCTP_V6_FLOW    0x07
  530. #define    AH_ESP_V6_FLOW    0x08
  531. #define    AH_V4_FLOW    0x09
  532. #define    ESP_V4_FLOW    0x0a
  533. #define    AH_V6_FLOW    0x0b
  534. #define    ESP_V6_FLOW    0x0c
  535. #define    IP_USER_FLOW    0x0d
  536.  
  537. /* L3-L4 network traffic flow hash options */
  538. #define    RXH_L2DA    (1 << 1)
  539. #define    RXH_VLAN    (1 << 2)
  540. #define    RXH_L3_PROTO    (1 << 3)
  541. #define    RXH_IP_SRC    (1 << 4)
  542. #define    RXH_IP_DST    (1 << 5)
  543. #define    RXH_L4_B_0_1    (1 << 6) /* src port in case of TCP/UDP/SCTP */
  544. #define    RXH_L4_B_2_3    (1 << 7) /* dst port in case of TCP/UDP/SCTP */
  545. #define    RXH_DISCARD    (1 << 31)
  546.  
  547. #define    RX_CLS_FLOW_DISC    0xffffffffffffffffULL
  548.  
  549. #endif /* _LINUX_ETHTOOL_H */
  550.